// 子模块cart路径：store/modules/cart.js 
export default {
    // 命名空间
    namespaced: true,
    state: {
        cartList: uni.getStorageSync("cartList") || []
        // 购物车数组
        // cartList: [
        // {
        // 商品的id
        // 商品图片
        // 商品价格
        // 商品的名称
        // 选中状态
        // 购买的数量
        // }
        // ]
    },
    getters: {
        // 已经选中的商品 数组
        checkedCartList: state => state.cartList.filter(item => item.checked === true),
        // 要支付的商品的总价格 checkedPrice
        checkedPrice(state, getters) {
            return getters.checkedCartList.reduce((price, item) => price += item.nums * item.goods_price, 0);
        },

        // 要支付的商品的总数量 checkedCount
        checkedCount(state, getters) {
            return getters.checkedCartList.reduce((count, item) => count += item.nums, 0);
        }
    },
    mutations: {
        // 给购物车 新增商品元素 payload={value:要添加的商品对象}
        cartAdd(state, payload) {
            // 判断当前商品是否已经存在 
            const index = state.cartList.findIndex(item => item.goods_id === payload.value.goods_id);
            if (index === -1) {
                // 不存在 push新的元素
                // 要自己设置一个购买数量进去
                state.cartList.push({ ...payload.value, nums: 1, checked: true });
            } else {
                // 存在
                // 存在 找到它 购买数量 ++
                state.cartList[index].nums++;
            }
            // console.log(state.cartList);
            uni.setStorageSync("cartList", state.cartList)
        },
        // 选中  取消
        cartGoodsChecked(state, index) {
            state.cartList[index].checked = !state.cartList[index].checked
            uni.setStorageSync("cartList", state.cartList)
        },
        // 数量加减
        cartGoodsNumUpdate(state, payload) {
            state.cartList[payload.index].nums += payload.unit
            uni.setStorageSync("cartList", state.cartList)
        },
        // 当为1时候减就是删除
        cartGoodsRemove(state, index) {
            state.cartList.splice(index, 1)
            uni.setStorageSync("cartList", state.cartList)
        },
        cartAllGoodsChecked(state, allChecked) {
            state.cartList.forEach(item => item.checked = allChecked);
            uni.setStorageSync("cartList", state.cartList)
        }
    },
    actions: {

    }
}